#ifndef __ZOMBIE_H__
#define __ZOMBIE_H__

#include <Ogre.h>
#include "MyMotionState.h"
#include "BulletVehicle.h"
#include "Character.h"
#include "Human.h"

#define ZOMBIEMESH "zombie.mesh" // Mesh del zombie
#define MINDISTANCETOHUMAN 10 // Distancia para perseguir al humano

class ZombieSwarm;

class Zombie : public Character {

 private:

  /* // Atributos Bullet -------------------------------------------------- */

  /* btDiscreteDynamicsWorld* _pWorld; */
  /* btCylinderShape* _pZombieCollisionShape; */
  /* MyMotionState* _pZombieMotionState; */
  /* btRigidBody* _pZombieRigidBody; */

  /* // Atributos Ogre ---------------------------------------------------- */

  /* Ogre::SceneManager* _pSceneManager; */
  /* Ogre::Entity* _pZombieEntity; */
  /* Ogre::SceneNode* _pZombieNode; */

  // Otros atributos ---------------------------------------------------

  Human* _pHuman; // Delicioso humano que comerse
  ZombieSwarm* _pSwarm; // Horda a la que pertenece este zombie


 public:

  Zombie(btDiscreteDynamicsWorld* pWorld,
         btCylinderShape* pZombieCollisionShape,
         Ogre::SceneManager* pSceneManager,
         OpenSteer::Vec3 position,
         Human* pHuman,
         ZombieSwarm* pSwarm = NULL);

  void update(const float currentTime, const float elapsedTime);
  OpenSteer::Vec3 steerForZombie(const float elapsedTime);
};

#endif
